package com.atwulidun.flyweight10;
// 抽象享元：可以是接口或抽象类
public interface Book {
    // 某个学生借阅图书的抽象方法
    void borrow(Student student);

    // 获取书名的方法
    String getName();
}

// 具体享元：具体的图书类(为了方便，这里只写一种，不同的书以书名来区分即可)
class ConcretBook implements Book{
    // 书的名称
    private String name;

    public ConcretBook(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void borrow(Student student) {
        System.out.println(student.getName() + "借阅了一本书，书名为" + name);
    }
}
